The concept of user-controlled expansion of local storage devices is known in the prior art (see U.S. patent application Ser. No. 11,636,540 “DEVICE AND METHOD FOR CONTROLLING USAGE OF A MEMORY CARD” by Agami et al). This concept is traditionally built on a statically pre-determined physical memory array, part of which is hidden from the host file system and hence the user, and which may only be activated upon user request. Such a user request may be initiated remotely by the device controller and may include payment. However, this approach has a number of shortcomings, not the least of which include: the size of the manufactured memory array is determined at production time resulting in an inability for the user to further expand the storage capacity of the memory array beyond the pre-determined hidden capacity, i.e., there is no usage flexibility etc., and, the ratio between hidden and exposed memory is determined at production time, or in any case, before the local storage device reaches the user. By way of example, a device vendor may manufacture a number of memory devices each having a total storage capacity of 2 GB. However, the memory devices may be sold as 1 GB memory devices with the remaining 1 GB being hidden from, or at least rendered inaccessible to, the user. Even if the second GB is accessible upon payment by the user, the manufacturer of the memory device bears a risk; that is, that the user will not be able to access the second hidden GB without first paying the manufacturer.
One way to overcome the limitations of such physically expandable storage devices is through a proprietary client agent integrated into the Host that provides an abstraction of the storage whether local (i.e. accessed by the agent through legacy mass storage commands) or remote (i.e. accessed by the agent through network protocols). This particular approach has been implemented in various products such as that manufactured by Personalite Numerique and described in French patent FR0412199. However, since the client agent is typically application specific, its use is limited to specific platforms. Due in part to the heterogeneity of host operating systems, particularly in mobile platforms, the usefulness of the client agent may be quite limited. Additionally, since different mobile handsets may run on various different operating systems, such implementation typically requires complex software integration. This software integration generally proves even more complex when using mobile handsets that run on “closed” operating systems (such as Nucleus) as opposed to that of “open” operating systems such as Windows, Symbian, and the like.
Therefore, a method, system, and apparatus that overcomes the above-mentioned limitations while still affording the opportunity to operate in legacy LBA/mass storage mode (i.e. compatible with current legacy host file systems) is desired.